home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac: Not for Sale / Another.not.for.sale (Australia).iso / hold me in your arms / Virus / List of Mac Viruses < prev   
Internet Message Format  |  1989-12-20  |  71KB

  1. From: David.J.Ferbrache <davidf%CS.HW.AC.UK@IBM1.CC.Lehigh.Edu>
  2. Subject:    Mac Digest
  3. Date:       Thu, 11 May 89 11:36:52 BST
  4.  
  5. One of five!
  6.  
  7.  
  8. List of known Macintosh viruses
  9.  
  10. This digest includes a list of all known Apple Macintosh viruses together
  11. with a selection of reports (published in virus-l) describing the virus,
  12. its symptoms, propogation and detection.
  13.  
  14. The known viruses are:
  15.  
  16. 1. Peace (Drew/Macmag) virus
  17.  
  18.    designed to display a message of world peace on March 2nd 1988 and then
  19.    delete itself. The virus propogates by inserting an INIT 6 (Name "RR")
  20.    into the system file. This virus does not infect application programs but
  21.    propagates only to system files present on hard or floppy disks.
  22.  
  23. 2. nVIR virus
  24.  
  25.    probably the most ubiquitous of all Mac viruses, seven variants
  26.    of this virus are known to exist. nVIR spreads via infected system files
  27.    and applications. When an infected application is executed a INIT 32
  28.    resource is added to the system folder, when the Mac is subsequently
  29.    rebooted the virus becomes resident in memory. Thereafter all application
  30.    programs started are infected (including the finder/multi-finder) through
  31.    the addition of a CODE 256 resource. The virus is so named for the
  32.    nVIR resources added (in addition to INIT/CODE) to the system file or
  33.    application program.
  34.  
  35.    The nVIR A variant incorporates a counter which is decremented from 1000
  36.    by 1 each reboot, and by 2 each time an infected application is run. When
  37.    the counter reaches zero nVIR A will say "Dont panic" if MacinTalk is
  38.    installed, or beep if not. This occurs 1 in 16 reboots, 1 in 8 aplication
  39.    runs.
  40.  
  41.    The nVIR B variant beeps (does not use Mac-in-talk) 1 in 8 reboots, and
  42.    1 in 4 application startups.
  43.  
  44.    Variants of this virus allegedly exist which when activated will delete
  45.    a random file from the system folder.
  46.  
  47.    The further variants of the nVIR virus consist of slight modifications
  48.    to the name or number used for the auxiliary nVIR resources, thus:
  49.  
  50.  
  51.    a. Hpat - renumbered code resource, nVIR changed to Hpat. Otherwise
  52.       symptoms as for nVIR B.
  53.  
  54.    b. AIDS - renamed code resources, nVIR changed to AIDS. Otherwise
  55.       symptoms as for nVIR B.
  56.  
  57.    c. MEV# - renamed code resources, nVIR changed to MEV#. Otherwise
  58.       symptoms as for nVIR B.
  59.  
  60.    The characteristic resources for the nVIR A/B, Hpat and AIDS viruses,
  61.    which can be seen in infected system files or applications using a
  62.    resource editor, are:
  63.  
  64.    Virus         Common to both       System file          Application
  65.  
  66.    nVIR A        nVIR 1 (378 byte)    INIT 32 (366 bytes)  CODE 256 (372 bytes)
  67.                  nVIR 6 (868 byte)    nVIR  0 (2 bytes)    nVIR   2 (8 bytes)
  68.                  nVIR 7 (1562 byte)   nVIR  4 (372 bytes)  nVIR   3 (366 bytes)
  69.                                       nVIR  5 (8 bytes)
  70.  
  71.    nVIR B        nVIR 1 (428 byte)    INIT 32 (416 bytes)  CODE 256 (422 bytes)
  72.                  nVIR 6 (66 byte)     nVIR  0 (2 bytes)    nVIR   2 (8 bytes)
  73.                  nVIR 7 (2106 bytes)  nVIR  4 (422 bytes)  nVIR   3 (416 bytes)
  74.                                       nVIR  5 (8 bytes)
  75.  
  76.    Hpat          Hpat 1 (428 byte)    INIT 32 (416 bytes)  CODE 255 (422 bytes)
  77.                  Hpat 6 (66 bytes)    Hpat  0 (2 bytes)    Hpat   2 (8 bytes)
  78.                  Hpat 7 (2106 bytes)  Hpat  4 (422 bytes)  Hpat   3 (416 bytes)
  79.                                       Hpat  5 (8 bytes)
  80.  
  81.    AIDS          AIDS 1 (428 byte)    INIT 32 (416 bytes)  CODE 256 (422 bytes)
  82.                  AIDS 6 (66 bytes)    AIDS  0 (2 bytes)    AIDS   2 (8 bytes)
  83.                  AIDS 7 (2106 bytes)  AIDS  4 (422 bytes)  AIDS   3 (416 bytes)
  84.                                       AIDS  5 (8 bytes)
  85.  
  86.    MEV# not confirmed, but assumed to demonstrate the same pattern as AIDS.
  87.  
  88. 3. Scores virus
  89.  
  90.    Scores infects the system folder, applications, note pad and scrapbook
  91.    files. When an infected application is run the virus will infect the
  92.    system file, note pad and scrapbook file. In addition two invisible system
  93.    files are created named Scores and Desktop.
  94.  
  95.    Two days after system infection the virus begins to spread to application
  96.    programs. Any applications run are infected, applications with "VULT" and
  97.    "ERIC" resources are specifically targetted. If such an application is run
  98.    the virus will cause a system error after 25 minutes of use.
  99.  
  100.    After 7 days the final phase of virus activity is entered: 15 minutes
  101.    after a "VULT" application is started the virus will cause any writes to
  102.    a disk file to return a system error.
  103.  
  104.    Other than the extension of application files and memory usage Scores
  105.    does not damage applications or destroy data.
  106.  
  107.    The characteristic resources of this virus are:
  108.  
  109.    Scores  System file INIT 6 (772 bytes), INIT 10 (1020 bytes),
  110.                        INIT 17 (480 bytes), atpl 128 (2410 bytes),
  111.                        DATA -400 (7026 bytes)
  112.            Application CODE n+2 (7026 bytes) [where n is the number of the
  113.                        last application code resource]
  114.  
  115. 4. INIT 29 virus
  116.  
  117.    INIT 29 is activated when an infected application is run or selected,
  118.    the system file is then infected, and the virus patches the Open resource
  119.    file trap.
  120.  
  121.    Subsequently any action which opens the resource fork of a file will cause
  122.    that file's fork to be infected. This infection takes the form of the
  123.    addition of a 712 bytes code resource (numbered with the lowest free code
  124.    resource number) to applications or an INIT 29 to other files.
  125.  
  126.    Note that this virus does not require an application to be run to cause
  127.    infection. Only infected system files or applications will spread the virus,
  128.    although a large number of other files may be infected.
  129.  
  130.    A characteristic of this virus is its attempt to infect the desktop on
  131.    a newly inserted disk, causing the message that "The disk needs minor
  132.    repairs"
  133.  
  134. 5. ANTI virus
  135.  
  136.    ANTI is the first virus for the Mac which does not add a resource to the
  137.    infected file. The virus instead appends its code to the main code
  138.    resource of the application, and patches the code to ensure its execution
  139.    prior to the application. The virus adds 1344 to the CODE 1 resource of the
  140.    application file being infected.
  141.  
  142.    Again it is not necessary to run an application to cause infection,
  143.    however Anti is less infectious as it does not infect the system file, and
  144.    thus the infection will only be activated when an infected application is
  145.    run.
  146.  
  147.    Due to a bug Anti will not spread under Multi-finder.
  148.  
  149. 6. Dukakis virus
  150.  
  151.    One of the more unusual viruses, this is a Hypertext virus which propogates
  152.    between Hypertext stacks. When an infected stack is executed the openStack
  153.    handler displays a message "Dukakis for President", it then install the
  154.    virus into the home stack, from where it will infect each stack as it is
  155.    opened.
  156.  
  157. This concludes a brief overview of the known Mac viruses, appended at the
  158. end of this article are a selection of articles appearing in virus-l or
  159. on various bulletin boards over the past year.
  160.  
  161. Hopefully this article (the first of five) has done something to increase
  162. the level of awareness by users of the threat posed by Mac viruses, it may
  163. also save people hunting through backissues.
  164.  
  165. The next installment will be targetted at IBM PC viruses, it will be slightly
  166. longer since it should describe about 70 variants of 17 viruses. Following
  167. this will be a section on Atari ST viruses, Commodore Amiga viruses and finally
  168. Apple II viruses.
  169.  
  170. This series is a stopgap until I can publish a formal catalogue of known
  171. viruses (due out at the end of June), with standardised description
  172. formats. Please, please report any viruses you find which do not appear in
  173. these lists. There are a large number of experts in the field (amongst which
  174. I don't yet count myself!) who can arrange for the rapid analysis and
  175. disassembly of new viruses.
  176.  
  177. ------------------------------------------------------------------------------
  178. Dave Ferbrache                            Internet   <davidf@cs.hw.ac.uk>
  179. Dept of computer science                  Janet      <davidf@uk.ac.hw.cs>
  180. Heriot-Watt University                    UUCP       ..!mcvax!hwcs!davidf
  181. 79 Grassmarket                            Telephone  +44 31-225-6465 ext 553
  182. Edinburgh, United Kingdom                 Facsimile  +44 31-220-4277
  183. EH1 2HJ                                   BIX        dferbrache
  184. ------------------------------------------------------------------------------
  185.  
  186. MACMAG VIRUS
  187.  
  188. Subject: MacMag virus infects commercial software
  189.  
  190. According to an article in this morning's San Jose Mercury News, the "DREW"
  191. INIT-virus has been found to have infected a commercial software product.
  192.  
  193. The virus, which was a "benign" time-bomb designed to display a message of
  194. world peace on March 2nd, is present on disks containing Aldus FreeHand.
  195. The virus was inadvertently passed to Aldus by Marc Canter, president of
  196. MacroMind Inc., which makes training disks for Aldus.  Canter visited
  197. Canada some time ago, and was given a disk containing a program called
  198. "Mr. Potato Head", which lets users play with a computerized version of the
  199. toy character.  Canter ran the program only once, and his machine was
  200. apparently infected by the virus at this time.  Subsequently, the virus
  201. infected a disk of training software that Canter then delivered to Aldus;
  202. at Aldus, the virus infected disks that were then sold to customers.
  203.  
  204. Although this virus was believed to be harmless, Canter reports that it forced
  205. his Macintosh II computer to shut down and caused him to lose some computer
  206. information.  "My system crashed," Canter said, "I was really angry."
  207.  
  208.     (( Not all that surprising... quite a few popular but nonstandard
  209.            programming tricks used on the classic Mac don't work on the Mac II
  210.            due to its different video card/monitor architecture...  many
  211.            games, etc. don't run on the II for this reason and can cause some
  212.            very impressive system crashes...  dcp ))
  213.  
  214. Canter fears that more of his customers may have been infected by the virus.
  215. MacroMind's clients include Microsoft Corp., Lotus Development Corp., Apple
  216. Computer Inc. and Ashton-Tate.
  217.  
  218. Microsoft has determined that none of its software has been infected, a
  219. company spokeswoman said.  Apple and Lotus could not be reached for comment.
  220. Ashton-Tate declined to comment.
  221.  
  222. Aldus would not comment on how many copies of FreeHand are infected, but
  223. admits that a disk-duplicating machine copied the infected disk for three
  224. days.  Half of the infected disks have been distributed to retail outlets;
  225. the other half are in Aldus' warehouse.
  226.  
  227. Aldus will replace the infected disks with new, uninfected copies to any
  228. FreeHand buyer who requests it, according to Aldus spokeswoman Laury Bryant.
  229. The company will also replace the infected disks in its warehouse.
  230.  
  231.     (( As I recall, the DREW virus infects the System file on affected
  232.            disks, but doesn't affect applications directly.  I suppose that
  233.            Aldus could salvage the damaged disks by replacing the System
  234.            folders with copies from a locked, uninfected disk... but it'll
  235.            probably be faster for them to simply erase and reduplicate.
  236.  
  237.        I have no idea what Canadian liability laws are like these days...
  238.            but I rather suspect that if MacMag were a United States company
  239.            rather than a Canadian one, its publisher would now be extremely
  240.            vulnerable to a liability-and-damages suit of some sort.  This
  241.            escapade will probably cost Aldus a pretty piece of change in
  242.            damage-control expenses and perhaps loss-of-sales or injury-to-
  243.            reputation.
  244.  
  245.            Kids, don't try this sort of thing at home!
  246.  
  247.                     --- dcp ))
  248.  
  249. Dave Platt
  250.   UUCP: ...!$ames,sun,uunet!coherent!dplatt     DOMAIN: dplatt@coherent.com
  251.     INTERNET: coherent!dplatt@ames.arpa, ...@sun.com, ...@uunet.uu.net
  252.  
  253. -------------------------------------------------------------------------
  254.  
  255. NVIR VIRUS
  256.  
  257.  
  258.                   Vaccination
  259.                 by Mike Scanlin
  260.  
  261.     Reprinted by special permission of David Smith from
  262.  
  263.                 MacTutor
  264.                   P.O. Box 400
  265.               Placentia, CA  92670
  266.                  (714) 630-3730
  267.  
  268. Unless you are going to Africa or Indochina, viruses and vaccinations are
  269. not something that most of us need to worry about. However, even if you're
  270. not planning on travelling, there is one virus you need to be aware of. It
  271. is a computer virus that is infecting Macintoshes everywhere.
  272.  
  273. Are you infected?
  274.  
  275. Use ResEdit to open your system file and look for 'nVIR' resources. If you
  276. have them, then your system has been infected and chances are that at least
  277. some (if not most or all) of your applications are infected. Don't panic.
  278. This particular virus is relatively harmless. There is an application at
  279. the end of this article that will allow you to remove the virus from your
  280. infected applications. There is also an 'INIT' resource you can put in your
  281. System Folder that will warn you if this virus ever shows up on your
  282. system.
  283.  
  284. How I found it
  285.  
  286. Until last week, I had had no experience with computer viruses. I had heard
  287. rumors about the existence of Mac viruses, but didn't really believe them.
  288. I do not know when this virus first got into my system. It must have come
  289. from some program I downloaded off of a network, but I do not know which
  290. one. By the time I figured out what was going on, the virus had modified
  291. seventeen of the applications on my hard disk and my System file.
  292. Sometime near the beginning of last week, I started hearing a beep when
  293. launching programs. It didn't happen every time, only once in a while and
  294. with no discernable pattern. Using TMON, I trapped SysBeep() and discovered
  295. that something was modifying 'CODE' 0 and installing several 'nVIR'
  296. resources into every application I launched. I looked in my System file
  297. and, in addition to several 'nVIR' resources, found an 'INIT' 32 resource
  298. that I didn't put there. I compared the standard 'INIT's from an original
  299. system disk and none of them matched the 'INIT' 32 I had found. What really
  300. clued me in to the idea of a virus was that if I took the 'INIT' 32
  301. resource out of my System file, quit ResEdit, and then relaunched ResEdit,
  302. the 'INIT' 32 resource would be back in there. After disassembling 'INIT'
  303. 32, I learned how it worked and how to make my system immune to it. I am
  304. sharing this information so that other Mac users can protect themselves as
  305. well.
  306.  
  307. How to make your System file immune
  308.  
  309. Use ResEdit to open your System file. Create an 'INIT' 32 resource that
  310. consists of these 2 hex bytes: 4E 75 (which is an RTS instruction). If
  311. 'INIT' 32 already exists and has a size of 366 bytes, then you can be
  312. pretty sure it is the virus' 'INIT'. Replace the existing 'INIT' 32 with
  313. the 2 byte version (4E 75). Now create 8 resources of the type 'nVIR'; the
  314. case of the resource type is important Q do not use 'NVIR' or 'nvir'. Their
  315. IDs should be 0 through 7, with size zero bytes. If they already exist,
  316. then delete them and create 8 new empty ones (with IDs 0-7).
  317. That's it. Your system is now immune to this particular virus (but not all
  318. possible viruses). If you now run an infected application, the virus will
  319. think that it is already installed in your system file, since it sees the
  320. 'INIT' and 'nVIR' resources it expects, and will leave it alone.
  321. If your System file was infected before you immunized it, you should reboot
  322. the system before using the procedure below to remove the virus from your
  323. applications. This guarantees that the  effects of 'INIT' 32 are removed
  324. from memory.
  325.  
  326. Removing the virus from infected applications
  327.  
  328. If an application has been infected, it will have several 'nVIR' resources,
  329. a 'CODE' 256 resource, and a possibly modified 'CODE' 0 resource. Here are
  330. instructions on how to restore an infected application (note: this is only
  331. useful if you are certain that your System file is not infected. Otherwise,
  332. the applications will become infected again. Also, you should practice on a
  333. copy of an infected application):
  334.  
  335. 1) Open the application with ResEdit. If 'CODE' 256 exists, use GetInfo on
  336. it to check its size. If it is 372 bytes, then remove it. The reason we
  337. check for the size is because some applications, such as ReadySetGo,
  338. already have a 'CODE' 256 resource of their own and we don't want to remove
  339. part of the application's code.
  340.  
  341. 2) Open 'CODE' 0 and look at the 3rd line of 8 hex bytes (bytes 16-23). If
  342. it is "0000 3F3C 0100 A9F0" then you need to replace that line of hex
  343. numbers with the 8 bytes contained in the 'nVIR' 2 resource. If the third
  344. line does not look like the above 8 bytes, then the 'CODE' resource is
  345. probably protected and did not get modified Q see below for an explanation.
  346. In this case leave it alone.
  347.  
  348. 3) Remove all 'nVIR' resources. Make sure you have completed step 2 before
  349. removing 'nVIR' 2. You cannot restore the application without it.
  350.  
  351. Because this procedure is so automatic, I have written a program that does
  352. it for you. The application Vaccination displays the SFGetFile dialog and
  353. allows you to choose an application to vaccinate. A message is displayed
  354. that tells you the result of the vaccination and the SFGetFile dialog is
  355. displayed again. If your system has been infected, you should vaccinate
  356. every application on your hard drive. You will only see files of type
  357. 'APPL' in the SFGetFile dialog so you might want to do a manual tree walk
  358. of your hard drive to be sure you vaccinate all of your applications. There
  359. is no harm in vaccinating an uninfected application or in vaccinating the
  360. same application more than once. This program does not make applications
  361. immune to this virus, it only removes this virus from them. But if your
  362. System file is immune, then there is no way this particular virus can
  363. spread to your applications. Note: you cannot use the Vaccination program
  364. to make your System file immune. You will have to do that manually using
  365. the procedure above.
  366.  
  367. How this virus works
  368.  
  369. This particular virus modifies the 'CODE' 0 resource of an application in
  370. such a way that when you launch that application the first thing to execute
  371. is a piece of virus installation code. That installation code looks for the
  372. virus' presence in the System file you are launching from. If it does not
  373. find evidence of the virus, it then installs itself  (as 'INIT' 32 and
  374. several 'nVIR' resources) into your System file and then executes the
  375. application you had originally launched. Once your System file is infected,
  376. every application launched from that system will become infected. The whole
  377. infection process only takes a second or two, so there is little chance you
  378. will notice it. If the virus detects that it is already in the System file
  379. and in the application you are launching (meaning that no installation of
  380. itself is necessary on this launch), then there is about a 6% chance (1 in
  381. 16) that you will hear a short beep. This is the beep that first got my
  382. attention. According to a friend of mine, Chris Borton, whose computer was
  383. also infected, if you have MacinTalk in your System Folder, then the virus
  384. speaks the words "Don't Panic" instead of beeping.
  385.  
  386. This virus does not check if the 'CODE' 0 resource of the application it is
  387. trying to infect is protected or not. Consequently, applications that have
  388. 'CODE' 0 resources with the resProtected bit set are still infected, but
  389. are not contagious, i.e. they have the 'CODE' 256 resource and the 'nVIR'
  390. resources added to them, but they can not pass the virus on to a clean
  391. System file. I learned this by noticing that QUED/M and PageMaker were
  392. infected, but were not contagious. I couldn't figure out why some programs
  393. had protected 'CODE' resources and others didn't. Then one of the people I
  394. work with, Victor Romano, put it together. He told me that Lightspeed C
  395. (which QUED/M and PageMaker were written in) automatically sets the
  396. resProtected bit of the 'CODE' resources it generates. MPW does not. So,
  397. protecting the 'CODE' resources (which can be done with ResEdit) is another
  398. simple way of preventing this virus from affecting an application.
  399.  
  400. To be forewarned
  401.  
  402. I don't know how far this virus has already spread, or how far it will
  403. spread. As a partial defense, however, I have written a piece of code that
  404. can be installed as an 'INIT' file in your System Folder that will warn you
  405. if it detects something that looks like this particular virus.
  406. VirusWarnINIT is a patch on 2 routines that this virus relies on:
  407. GetResource() and ChangedResource(). The patch to GetResource() makes a
  408. beep if theType == 'nVIR'. The patch to ChangedResource() makes a beep if
  409. theResource is a handle to a 'CODE' 0 resource. I wouldn't suggest
  410. installing this 'INIT' in a system known to be infected Q the number of
  411. beeps is sure to annoy you. I would have used something like an alert
  412. window instead of a beep as a warning, but I can't be sure that the Window
  413. Manager has been initialized at the time the virus is detected. If you
  414. install this 'INIT' in a clean system and then launch a contagious
  415. application, you will hear about 5 or 6 beeps in a row as the virus tries
  416. to install itself in your System file.
  417.  
  418. Note that this 'INIT' is only a warning, not a vaccination. The virus will
  419. still install itself. The advantage is that you will know about it right
  420. away and can stop it before it spreads very far.
  421.  
  422. Now that my Mac has been vaccinated, it's my turn. After Typhoid, Yellow
  423. Fever, Cholera and Meningococcal vaccinations, I'm off to Africa and
  424. Indochina. I wonder if I can get David Smith to send MacTutor to Serengeti
  425. National Park? Or do they already get it there? I'll let you know...
  426.  
  427.  
  428.  
  429. Chris "Johann" Borton, UC San Diego    ...!sdcsvax!borton
  430.                     borton@ucsd.edu or BORTON@UCSD.BITNET
  431. Letztes Jahr in Deutschland, nog een jaar hier, en dan naar Amsterdam!
  432. "H = F cubed.  Happiness = Food, Fun, & Friends."  --Steve Wozniak
  433.  
  434.  
  435.  
  436. From: jln@accuvax.nwu.edu
  437. To: info-mac@sumex-aim.stanford.edu
  438. Cc: jln@accuvax.nwu.edu
  439. Subject: nVIR A and B
  440. Message-Id:  <8903162025.ac12267@accuvax.nwu.edu>
  441.  
  442. There has been some confusion over exactly what the nVIR A and nVIR B
  443. viruses actually do.  In fact, I don't believe the details have ever
  444. been published.  I just finished spending a few days researching
  445. the two nVIR viruses.  This report presents my findings.
  446.  
  447. As with all viruses, nVIR A and B replicate.  When you run an infected
  448. application on a clean system the infection spreads from the application
  449. to the system file.  After rebooting the infection in turn spreads from
  450. the system to other applications, as they are run.
  451.  
  452. At first nVIR A and B only replicate.  When the system file is first
  453. infected a counter is initialized to 1000.  The counter is decremented
  454. by 1 each time the system is booted, and it is decremented by 2 each
  455. time an infected application is run.
  456.  
  457. When the counter reaches 0 nVIR A will sometimes either say "Don't
  458. Panic" (if MacinTalk is installed in the system folder) or beep (if
  459. MacinTalk is not installed in the system folder).  This will happen
  460. on a system boot with a probablity of 1/16.  It will also happen when
  461. an infected application is launched with a probability of 31/256.  In
  462. addition, when an infected application is launched nVIR A may say
  463. "Don't Panic" twice or beep twice, with a probability of 1/256.
  464.  
  465. When the counter reaches 0 nVIR B will sometimes beep.  nVIR B does not
  466. call MacinTalk.  The beep will happen on a system boot with a
  467. probability of 1/8.  A single beep will happen when an infected
  468. application is launched with a probability of 15/64.  A double beep will
  469. happen when an infected application is launched with a probability of
  470. 1/64.
  471.  
  472. I've discovered that it is possible for nVIR A and nVIR B to mate and
  473. sexually reproduce, resulting in new viruses combining parts of their
  474. parents.
  475.  
  476. For example, if a system is infected with nVIR A, and if an application
  477. infected with nVIR B is run on that system, part of the nVIR B
  478. infection in the application is replaced by part of the nVIR A
  479. infection from the system.  The resulting offspring contains parts from
  480. each of its parents, and behaves like nVIR A.
  481.  
  482. Similarly, if a system is infected with nVIR B, and if an application
  483. infected with nVIR A is run on that system, part of the nVIR A
  484. infection in the application is replaced by part of the nVIR B
  485. infection from the system.  The resulting offspring is very similar
  486. to its sibling described in the previous paragraph, except that it has
  487. the opposite "sex" - each part is from the opposite parent.  It behaves
  488. like nVIR B.
  489.  
  490. These offspring are new viruses.  If they are taken to a clean system
  491. they will infect that system, which will in turn infect other
  492. applications.  The descendents are identical to the original offspring.
  493.  
  494. I've also investigated some of the possible incestual matings of these
  495. two kinds of children with each other and with their parents.  Again,
  496. the result is infections that contain various combinations of parts
  497. from their parents.
  498.  
  499. John Norstad
  500. Academic Computing and Network Services
  501. Northwestern University
  502.  
  503. Bitnet: jln@nuacc
  504. Internet: jln@acns.nwu.edu
  505. Applelink: a0173
  506.  
  507. ----------------------------------------------------------------------------
  508.  
  509. HPAT VARIANT OF NVIR
  510.  
  511.  
  512. From: alexis@ccnysci.UUCP (Alexis Rosen)
  513. Subject: Hpat virus- it is a slightly modified nVIR 'B'.
  514. Date: 7 Jan 89 10:09:44 GMT
  515.  
  516. Bob Murrow sent me a copy of the Hpat virus two days ago. I have taken
  517. it apart and these are my findings.
  518.  
  519.  
  520. Hpat is, in essence, a slightly modified version of nVIR type 'B' (as
  521. described by myself and John Norstad). The differences are trivial:
  522.  
  523. 1) The CODE resource #256, which contains most of nVIR's code, is
  524.    renumbered to CODE #255.
  525. 2) Various references to CODE 256 are changed to CODE 255.
  526. 3) Various references to resource type 'nVIR' are changed to 'Hpat'.
  527.  
  528. There is one minor difference that I'm not 100% sure about. It doesn't
  529. seem serious, however. In nVIR 'B', resource 'nVIR' 2 is used to hold
  530. the original jump table entry for code segment 1 (which is replaced by
  531. the virus with an entry for its own code resource). In Hpat, however, it
  532. is replaced with the following:
  533.         $0200             ( possibly a segment number? )
  534.          4EED 003A        ( JMP $003A(A5) )
  535.          4E71             ( NOP )
  536.  
  537. This looks to me like a "loaded" jump table entry for CODE 1, but I
  538. could be wrong. I believe that the JMP instruction might change,
  539. depending on the particular application infected. If I'm right, then
  540. this difference is not meaningful.
  541.  
  542.  
  543. Be WARNED: RWatcher, in its default configuration, will not stop an
  544. already-infected system from infecting new applications. It will,
  545. however, prevent an infected app from infecting a clean system. This is
  546. because it won't catch 'Hpat' resources or the CODE 255, but it will
  547. catch the INIT 32. To be perfectly safe you might want to edit the RLIS
  548. resource in RWatcher (a very nice INIT, by the way).
  549.  
  550. One thing I wonder about: Why didn't the jerk who built Hpat modify the
  551. INIT number? If (s)he went to the trouble of changing the ID of the CODE
  552. resource and the type of the viral resources (presumably to escape the
  553. notice of protection programs), why not alter the INIT ID as well?
  554.  
  555. Vaccine should catch Hpat infections (but it may crash on detection
  556. instead of putting up its dialog).
  557.  
  558.  
  559. In short, Hpat will be much the same pain in the ass that nVIR is, but
  560. it's not the really nasty virus of 1989. (That honor may be reserved for
  561. INIT 29 or some other undiscovered bug.)
  562.  
  563. Alexis Rosen
  564. alexis@ccnysci.uucp
  565.  
  566.  
  567. ---------------------------------------------------------------------------
  568.  
  569. AIDS VARIANT OF NVIR
  570.  
  571. discovered: AIDS.  [I find it a very poor joke as well]
  572.  
  573. It was discovered here in the Netherlands from an application of two weeks
  574. ago, the beginning of March 1989.  Thus far we have only found one department
  575. here infected (fingers crossed).
  576.  
  577. It looks, after short investigation, like an exact copy of nVIR type B, the one
  578. that beeps occasionally.  The resources are:
  579.  
  580. Infected System file:
  581.  
  582. Type    ID    Size
  583. --------------------
  584. INIT    32    416
  585. AIDS    0    2
  586. AIDS    1    428
  587. AIDS    4    422
  588. AIDS    5    8
  589. AIDS    6    66
  590. AIDS    7    2106
  591.  
  592. Infected application:
  593.  
  594. Type    ID    Size
  595. --------------------
  596. CODE    256    422
  597. AIDS    1    428
  598. AIDS    2    8
  599. AIDS    3    416
  600. AIDS    6    66
  601. AIDS    7    2106
  602.  
  603. Apple VirusRx notices the infection (due to the INIT 32) and reports a
  604. problem or an nVIR infection.  Virus Detective can be easily configured to
  605. find these problems by adding "AIDS all" to the search list, and "INIT 32" if
  606. it isn't already there.
  607.  
  608. The resources have been sent to John Norstad for inspection.
  609.  
  610. -cbb
  611.  
  612. ----------------------------------------------------------------------------
  613.  
  614. SCORES VIRUS
  615.  
  616. From: jpd@eecs.nwu.edu (Phil Draughon (ACNS))
  617. Subject: The Scores Virus
  618. Date: 18 Apr 88 16:11:09 GMT
  619.  
  620.  
  621. My colleague Bob Hablutzel got a copy of the Scores virus last
  622. Thursday and disassembled it, and I've been studying and testing
  623. it ever since. So far I've reverse-engineered about half the code
  624. and have a thorough understanding of how it works.  This note is a
  625. preliminary report on what I know so far, after four days of
  626. research.  It also outlines plans for a disinfectant program.
  627.  
  628. The virus is definitely targeted against applications with
  629. signatures VULT and ERIC.  I don't know if any applications with
  630. these signatures exist or are planned to be released.
  631.  
  632. The virus infects your system folder when you run an infected
  633. program.
  634.  
  635. The virus lies dormant for two days after your system folder is
  636. first infected.  After two, four, and seven days various parts
  637. wake up and begin doing their dirty work.
  638.  
  639. Two days after the initial infection the virus begins to spread to
  640. other applications.  I haven't completely finished figuring out
  641. this mechanism, but it appears that only applications that are
  642. actually run are candidates for infection.
  643.  
  644. After four days the second part of the virus wakes up.  It begins
  645. to watch for the VULT and ERIC applications.  Whenever VULT or
  646. ERIC is run it bombs after 25 minutes of use.  If you don't have a
  647. debugger installed you'll get a system bomb with ID=12.  If you
  648. have MacsBug installed you'll get a user break.
  649.  
  650. After seven days the third part of the virus wakes up.  Whenever
  651. VULT is run the virus waits for 15 minutes, then causes any
  652. attempt to write a disk file to bomb.  If you don't do any writes
  653. for another 10 minutes the application will bomb anyway, as
  654. described in the previous paragraph.  There's also more code to
  655. force a bomb after 45 minutes, but I can't see any way that this
  656. code can be reached, given the forced bomb after 25 minutes.
  657.  
  658. The virus identifies VULT and ERIC by checking to see if the
  659. application contains any resources of type VULT or ERIC.
  660. Applications with signatures VULT and ERIC normally contain these
  661. resources, but other applications normally don't.
  662.  
  663. I verified the behaviour of the virus by using ResEdit to add
  664. empty resources of types VULT and ERIC to the TeachText
  665. application.  TeachText bombed as described above on an infected
  666. system, even though TeachText itself was not infected!  While
  667. running my experiments I was in ResEdit on the infected system and
  668. heard the disk whir.  Sure enough, ResEdit was infected.  I've
  669. been running on an infected system with an infected ResEdit for
  670. three days.  I reset the system clock to fool the various parts of
  671. the virus into thinking it was time for them to wake up.  The
  672. Finder has also become infected.  ResEdit, Finder, and the rest of
  673. the system seem to be functioning normally.  Only my version of
  674. TeachText modified to look like VULT or ERIC has been affected by
  675. the virus.
  676.  
  677. If you repeat any of these experiments be very careful to isolate
  678. the virus.  I'm using a separate dual floppy SE to perform my
  679. experiments, and I've carefully labelled and isolated all the
  680. floppies I'm using.  My main machine is an SE with a hard drive,
  681. where I have MPW and my other tools installed.  It's OK to look at
  682. infected files on the main machine (e.g. with ResEqual, DumpCode,
  683. etc.), but don't run any infected applications on the main machine
  684. - that's how it installs itself and spreads.  Children should not
  685. attempt this without adult supervision :-)
  686.  
  687. An infected application contains an extra CODE resource of size
  688. 7026, numbered two higher than the previous highest numbered CODE
  689. resource.  Bytes 16-23 of CODE resource number 0 are changed to
  690. the following:
  691.  
  692.    0008 3F3C nnnn A9F0
  693.  
  694. where nnnn is the number of the new CODE resource.
  695.  
  696. You can repair an infected application by replacing bytes 16-23 of
  697. CODE 0 by bytes 2-9 of CODE nnnn, then deleting CODE nnnn.  I've
  698. tried this using ResEdit on an infected version of itself, and it
  699. works. The MPW utility ResEqual reports that the result is
  700. identical to the original uninfected version.
  701.  
  702. The virus creates two new invisible files named Desktop (type
  703. INIT) and Scores (type RDEV) in your system folder, and adds
  704. resources to the files System, Note Pad File, and Scrapbook File.
  705.  
  706. Note Pad File and Scrapbook File are created if they don't already
  707. exist.  Note Pad File is changed to type INIT, and Scrapbook File
  708. is changed to type RDEV.  Both of these files normally have file
  709. type ZSYS.  The icons for these two files change from the usual
  710. little Macintosh to the generic plain document icon.  Checking
  711. your system folder for this change is the easiest way to detect
  712. that you're infected.
  713.  
  714. Copies of the following five resources are created:
  715.  
  716.       Type     ID  Size  Files
  717.      -----  ----- -----  -------------------------------------
  718.       INIT      6   772  System, Note Pad File, Scrapbook File
  719.       INIT     10  1020  System, Desktop, Scores
  720.       INIT     17   480  System, Scrapbook File
  721.       atpl    128  2410  System, Desktop, Scores
  722.       DATA  -4001  7026  System, Desktop, Scores
  723.  
  724. A disinfectant program would have to repair all infected
  725. applications and clean up the system folder, undoing the damage
  726. described above.  I don't yet know exactly which files can be
  727. infected, but I know for sure that Finder (file type FNDR) can get
  728. infected, and that applications (file type APPL) can get infected.
  729. For safest results the disinfectant should examine and disinfect
  730. the resource forks of all the files on the disk.  I recommend the
  731. following algorithm:
  732.  
  733. Scan the entire file hierarchy on the disk, and for each file on
  734. the disk check it's resource fork.  Delete any and all resources
  735. whose type, ID, and size match the table above.  Delete all files
  736. whose resorce forks become empty after this operation.  If the
  737. resource fork's highest numbered CODE resource is numbered two
  738. more than the next highest numbered CODE resource, and if it's
  739. size is 7026, then patch the CODE 0 resource as described above,
  740. and delete the highest numbered CODE resource.  Also examine all
  741. files named Note Pad File and Scrapbook File.  If their file type
  742. is INIT or RDEV, change it to ZSYS.
  743.  
  744. I'm fairly confident that a disinfectant program implemented using
  745. the algorithm above would sucessfully eradicate the virus from a
  746. disk, restore all applications to their original uninfected state,
  747. and not harm any non-viral software on the disk.  It should work
  748. even on disks with multiple infected system folders.  I also
  749. believe that it should work even if run on an infected system, and
  750. even if the disinfectant program becomes infected itself!  There's
  751. a small chance that it could delete too many resources, and hence
  752. damage some other application, but that's a small price to pay for
  753. a clean system.
  754.  
  755. Getting rid of a virus is tricky, even with a disinfectant
  756. program.  The disinfectant program should be placed on a floppy
  757. disk along with a system folder.  Make a backup copy of this disk.
  758. The machine should be booted using the startup disk you just made,
  759. and then the disinfectant should be run on all the hard drives and
  760. floppies in your collection, including the backup copy of the
  761. startup disk you just made.  Don't run any other programs or boot
  762. from any other disks while disinfecting - you might get
  763. reinfected.  When you're all done, reboot from some other
  764. (disinfected) disk and immediately erase the startup disk you used
  765. to do the disinfecting, which may be (and probably is) infected
  766. itself.  This should absolutely, positively get rid of all traces
  767. of the virus.  The backup disk you made and disinfected should
  768. contain an uninfected copy of the disinfectant program in case you
  769. need to use it again.
  770.  
  771. There are at least two red herrings in the virus.  It uses a
  772. resource of type 'atpl', which is usually some sort of AppleTalk
  773. resource.  As far as I can tell, however, the virus does not
  774. attempt to spread itself over networks.  The 'atpl' resource is
  775. used for something else entirely.  This is not a bug.  Also, the
  776. virus creates the file Desktop in your system folder.  This is
  777. done on purpose.  It is not a failed attempt to modify the
  778. Finder's Desktop file in the root directory.  The file is used by
  779. the virus, and has nothing to do with the Finder.
  780.  
  781. I don't know why the virus seems to cause reported problems with
  782. MacDraw, printing, etc.  Perhaps it's a memory problem - the virus
  783. permanently allocates 16,874 bytes of memory at system startup
  784. (four blocks in the system heap of sizes 772, 40, 8, and 334, and
  785. one bock at BufPtr of size 15360).  I've only found one possible
  786. bug in the virus code, and it looks pretty harmless.  The code is
  787. very sophisticated, however, and I can easily understand how I
  788. might have overlooked a bug, or how it might interact in strange
  789. unintended ways with other applications and parts of the system.
  790.  
  791. When we've finished completely cracking this virus we'll probably
  792. distribute another report.  I've posted these preliminary results
  793. now to get the information out as quickly as possible.  We also
  794. hope to write the disinfectant program, if someone else doesn't
  795. write it first.
  796.  
  797. I've decided not to distribute detailed information on how this
  798. virus works.  I'll distribute detailed technical information about
  799. what it does and how to get rid of it, but not internal details.
  800. This was a very difficult decision to make, because normally I
  801. firmly believe in the enormous benifit of the free exchange of
  802. code and information.  The Scores virus is a very interesting and
  803. complicated piece of code, I've learned a great deal about the Mac
  804. by studying it, and I'm sure other people could learn a great deal
  805. from it too.  But I don't want to teach twisted minds how to write
  806. these incredibly nasty bits of code.  If I write the disinfectant
  807. program, however, I will distribute its source, because I do want
  808. to teach untwisted minds how to get rid of them.
  809.  
  810. So please don't bombard me with requests for more information.
  811. You may be the nicest, most honest, incredibly important person,
  812. but I won't tell you how it works.  I'll make only two exceptions,
  813. and that's for a very few of my colleagues at Northwestern
  814. University, and for qualified representatives of Apple Computer.
  815.  
  816. Thanks to Howard Upchurch for giving us a copy of the virus, and
  817. to Bob Hablutzel for helping me crack it.
  818.  
  819. ------------------------------
  820.  
  821. Date: Tue, 26 Apr 88 10:56 CDT
  822. From: John Norstad <JLN%nuacc.acns.nwu.edu@forsythe.stanford.edu>
  823. Subject: Scores Virus Report 2
  824.  
  825. This is my second report on the Scores virus.  The important good
  826. news is there are now two free disinfection programs called
  827. KillScores and Ferret 1.0.  I didn't write either one of them.
  828. They seem to work fine, so there's no need for me to write another
  829. one.  I'm also happy to report that CE Software's Vaccine 1.0 is
  830. effective against Scores.  There's not much new to report about the
  831. virus itself.
  832.  
  833. KillScores and Ferret 1.0 were posted on AppleLink over the weekend
  834. of April 16.  I discovered them shortly after posting my first
  835. report on Monday the 18th.  I believe they are also available on
  836. CompuServe, but I haven't checked.
  837.  
  838. Both of these programs were written specifically to eradicate the
  839. Scores virus.  They can also be used to simply check for the virus,
  840. without changing anything on your disk.
  841.  
  842. I tested both Ferret and KillScores on my small infected test
  843. system, and on some large uninfected ones.
  844.  
  845. Both of them worked on my small infected system.  They removed all
  846. traces of the virus and repaired the system folder and all the
  847. damaged applications correctly.  They both also correctly reported
  848. that several large systems with nearly full 20 and 80 megabyte hard
  849. drives were uninfected.
  850.  
  851. A word of warning, however.  My small test system only contains
  852. infected versions of TeachText, ResEdit, and MacWrite.  I don't
  853. have the facilities or the time to do large scale testing of lots
  854. of infected applications.  Also, I don't have the source code for
  855. either of the programs.  So I can't guarantee that either of them
  856. is perfect, or that they won't damage your files.
  857.  
  858. KillScores has a better user interface than Ferret 1.0, although
  859. neither one is very good.  Ferret 1.0 also seems to have a problem
  860. properly reporting the names of the infected files.  This only
  861. works some of the time.  KillScores does a much better job of
  862. telling you exactly what it's doing.
  863.  
  864. The important thing is that both of these programs seem to work,
  865. and the authors deserve our thanks.  Larry Nedry wrote Ferret 1.0,
  866. and KillScores is the work of the MacPack/Apple Corps of Dallas
  867. task force, headed by Howard UpChurch.
  868.  
  869. Getting rid of a virus is very tricky, even with the help of a
  870. disinfection program like KillScores or Ferret 1.0.  I managed to
  871. make mistakes using them during my tests, and ended up with a
  872. system that was still infected!  I recommend that you carefully
  873. follow the steps below to make sure that you've really eradicated
  874. all traces of the virus.
  875.  
  876. Step 1.  Make a startup disk containing just a system folder and a
  877. copy of the disinfection program (KillScores and/or Ferret 1.0).
  878. For the safest results the system folder should be copied as is
  879. from a locked original Apple system release disk.  The only files
  880. you really need in your system folder are System and Finder.  Make
  881. sure your system folder doesn't contain any non-Apple INITs, CDEVs,
  882. or other miscellaneous crap.
  883.  
  884. Step 2.  Restart your machine using the startup disk you just made.
  885.  
  886. Step 3.  Make a backup copy of the startup disk you just made.
  887.  
  888. Step 4.  Run the disinfection program on all the hard drives and
  889. floppies in your collection, including the backup copy you just
  890. made.  Don't run any other programs or boot from any other disks
  891. until you're done disinfecting, or you might get reinfected.  Use
  892. Finder, not MultiFinder (I've only tested under Finder.  The
  893. programs might work OK under MultiFinder too, but I don't know).
  894.  
  895. Step 5.  Shut down your system and restart using some other
  896. (disinfected) startup disk.
  897.  
  898. Step 6.  Immediately erase the startup disk you made in step 1 and
  899. used to disinfect your system.  The backup disk you made is free
  900. from infection, and it contains a copy of the disinfection program
  901. that you can use again if you need it.
  902.  
  903. For the safest results you should try to make sure that all the
  904. files you copy to your startup disk in step 1 are uninfected.
  905. That's why I recommend using your original locked Apple release
  906. disk.  I have, however, tested both KillScores and Ferret 1.0 with
  907. infected startup disks, and they seem to work OK.
  908.  
  909. To double check, you can run both KillScores and Ferret 1.0.  The
  910. program you run first should disinfect your disk, and the one you
  911. run second should report that the disk is free of infection.
  912.  
  913. I've also tested CE Software's Vaccine 1.0 with Scores.  It seems
  914. to be effective against the initial attempt at infection.  In all
  915. my tests my vaccinated system bombed whenever I attempted to run an
  916. application infected with Scores, and my system was not infected.
  917. I've tried this with the "expert display" option both on and off,
  918. and with the "always compile MPW INITS" option both on and off.
  919. I've seen bombs with ID=02 and ID=25.  I don't know why the system
  920. bombs instead of presenting Vaccine's usual dialog box or tiny
  921. icons.
  922.  
  923. I'd like to correct an error in the first report.  When fixing an
  924. infected application with ResEdit, you should replace bytes 16-23
  925. of CODE resource 0 by bytes 4-11 of CODE resource nnnn, not by
  926. bytes 2-9.  Bytes are numbered starting with 0.  I apologize if
  927. this caused anybody any grief.
  928.  
  929. I'd also like to thank Dave Lavery and Howard Upchurch for their
  930. early work on the Scores virus.  I used their results as a starting
  931. point for my own research, and I should have given them credit in
  932. my first report.
  933.  
  934. I've discovered several more interesting facts about Scores,
  935. including more attacks on VULT and ERIC, an explanation for why
  936. some applications don't get infected, and several bugs in the
  937. virus.  There also may be a few problems with the disinfection
  938. algorithm I presented in the first report.  The details aren't
  939. important now, so I won't describe them.
  940.  
  941. It has been reported that the virus contains some sort of special
  942. code designed to fool ResEdit.  This isn't true, although I have
  943. had ResEdit crash inexplicably on an infected system.
  944.  
  945. John Norstad
  946. Academic Computing and Network Services
  947. Northwestern University
  948. Evanston, IL 60208
  949.  
  950. Bitnet:   JLN@NUACC
  951. Internet: JLN@NUACC.ACNS.NWU.EDU
  952.  
  953. -------------------------------
  954.  
  955. Date: Mon, 2 May 88 09:52 CDT
  956. From: John Norstad <JLN%nuacc.acns.nwu.edu@forsythe.stanford.edu>
  957. Subject: Scores Virus Report 3
  958.  
  959. This is my third report on the Scores virus.  In my first report I
  960. revealed what Scores did, how to detect it, and how to get rid of
  961. it by hand using ResEdit.  In my second report I reviewed Ferret
  962. 1.0 and KillScores, two free disinfectant programs that have
  963. appeared to get rid of Scores.  In this report I describe further
  964. testing of Ferret 1.0, the new Ferret 1.1, and KillScores.
  965.  
  966. IMPORTANT:  Ferret 1.1 has very serious bugs!  Based on my tests I
  967. recommend using KillScores instead.
  968.  
  969. 1. Ferret 1.1 does NOT properly delete one of the viral resources
  970. in the system file (INIT 17), at least on my small infected test
  971. system!  I found this unbelievable, so I reran my test several
  972. times, and it failed each time.  Ferret 1.0 does not have this
  973. problem.
  974.  
  975. 2. Ferret 1.1 does NOT properly disinfect files which contain CODE
  976. resources marked "protected".  Some applications are distributed
  977. with protected CODE resources, and Scores can infect them, so this
  978. is another important bug.  Ferret 1.0 also has this bug.  In this
  979. case the supposedly repaired application is left in a seriously
  980. damaged state - it will bomb immediately on launch.
  981.  
  982. 3. Ferret 1.1 does NOT properly disinfect locked files.  This is an
  983. important bug, even though Scores can't infect locked files.  The
  984. file could have been unlocked when it became infected, and then the
  985. user could have locked it later.  Ferret 1.0 also has this bug.
  986. I'd like to thank Rich Holmes for first pointing out this bug.
  987.  
  988. 4. Ferret 1.1 still does NOT always properly report the names of
  989. infected files.  Ferret 1.0 also has this bug.
  990.  
  991. To make things even worse, Ferret does not give the user any
  992. indication that anything is wrong.  It leaves the user with the
  993. impression that his/her system is clean, when in fact it's still at
  994. least partially infected.
  995.  
  996. I also did further testing of KillScores.  KillScores had no
  997. problems with the cases above where Ferret failed - it properly
  998. disinfected all the files on my test system.  In the case of locked
  999. files KillScores unlocks the file, disinfects it, and leaves it
  1000. unlocked.
  1001.  
  1002. In my second report I mentioned that CE Software's Vaccine
  1003. effectively prevents infection by Scores, at least on my test
  1004. system.  If you are at all worried about viruses, and you should
  1005. be, I strongly recommend that you get Vaccine and use it
  1006. religiously.  CE Software deserves all of our thanks for developing
  1007. and giving away this important tool.  It's not perfect protection,
  1008. as the authors freely admit in the documentation, but it is
  1009. effective against Scores, and I understand that it's also effective
  1010. against most of the other recent Mac viruses.
  1011.  
  1012. Once again, I must emphasize that I do not have the facilities or
  1013. time to do large scale testing of many infected applications.  All
  1014. of my testing is done on a small floppy-only system, with only
  1015. MacWrite, TeachText, and ResEdit for infected applications.  So I
  1016. can't guarantee that KillScores or any other program is perfect, or
  1017. that I haven't made mistakes in these reports.
  1018.  
  1019. Also, I should probably mention that all of my statements in all of
  1020. my reports reflect my opinions only, and not those of my employer,
  1021. Northwestern University.
  1022.  
  1023. John Norstad
  1024. Academic Computing and Network Services
  1025. Northwestern University
  1026. Evanston, IL 60208
  1027.  
  1028. Bitnet:   JLN@NUACC
  1029. Internet: JLN@NUACC.ACNS.NWU.EDU
  1030.  
  1031. ---------------------------------------------------------------------------
  1032.  
  1033. INIT 29 VIRUS
  1034.  
  1035.  
  1036. 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0
  1037.  
  1038. THE ELEVENTH WORD:
  1039.  
  1040. 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0
  1041.  
  1042. An Investigation Into the 712-byte RINIT 29S Macintosh Virus
  1043.  
  1044. by Thomas Bond, Mac Consultant
  1045. 11684 Ventura Blvd., #932  %  Studio City, CA 91604
  1046. 818-843-0567
  1047.  
  1048. (C) 1989 by Thomas Bond.  Permission is hereby granted to distribute in whole
  1049. part by any means, whether in print or electronic, as long as the name,
  1050. address and phone of the author remain unchanged.  Publications may quote
  1051. parts for use in education on computer virus problems.
  1052.  
  1053.      Code 0
  1054.        /
  1055.   Virus Segment
  1056.        \
  1057.       Application Segments
  1058.         /
  1059.       ????????
  1060.  
  1061. ACKNOWLEDGEMENTS: This research could not have been completed without
  1062. the very valuable help received from Q Tom Pitts, Robert Wright and
  1063. David Lagerson of the MacValley Macintosh Users Group, Mark Weems of
  1064. Kinko's Studio City store, Ken Cary of PaperWorks in Burbank, Joe
  1065. Niewe of California State University, Northridge, and many others who
  1066. gave up their time and advice.
  1067.  
  1068. [MacValley membership is $30.00 per year, and provides access to the
  1069. PD Library with 1000's of freeware and shareware programs, official
  1070. releases of Apple System software, association with over 700 Mac
  1071. users, and special presentations from software companies, covering new
  1072. programs and developments in the industry.  For membership info, call
  1073. Bob Campbell, 818-784-2666.]
  1074.  
  1075.  
  1076. BACKGROUND:
  1077.  
  1078.  This report is being prepared on January 17, 1989, for distribution
  1079. at the monthly meeting of MacValley Macintosh Users Group in Burbank,
  1080. California.  It contains the most recent information available to the
  1081. author at this time: How the new RINIT 29S 712 byte virus acts, how to
  1082. detect it, how to prevent it, and how to repair the damage it may do,
  1083. at least in the early stages of its infection.  Those who need
  1084. immediate help because they know or strongly suspect that their disks
  1085. or hard disk(s) are infected, please turn to the section below labeled
  1086. FOR EMERGENCY ACTION.  Others may benefit from a more deliberate
  1087. reading of this paper, learning how these kinds of viruses work and
  1088. what to do about them.
  1089.  
  1090. The author, Thomas Bond, is a Mac Consultant working primarily in
  1091. desktop publishing and graphics, for various companies in the San
  1092. Fernando Valley and Greater Los Angeles area.  He is available for
  1093. professional consultations regarding this or other Macintosh
  1094. applications and problems by calling the number above, 24 hours.
  1095.  
  1096. Late in December, 1988, one of my clients, the Kinko's Copy Center at
  1097. Fulton Boulevard & Burbank Boulevards in Van Nuys, reported an unusual
  1098. problem: It's three rental computers, all with hard disks attached,
  1099. were rejecting all locked disks inserted into them.  After unlocking
  1100. and reinserting the disks, documents would open normally.  Sometimes
  1101. documents created with several programs such as PageMaker 3.0,
  1102. MacWrite 5.01, Ready,Set,Go! 4.0a, Microsoft Word 3.02, Aldus Freehand
  1103. 2.0, Adobe Illustrator 88, and others, would fail to print.  The
  1104. report from the program was either that Rthis document failed to
  1105. printS or in some cases there would be a bomb, or no report at all,
  1106. simply a failure to print.  On occasion, the hard disk would fail to
  1107. boot properly.
  1108.  
  1109. Checks with Apple's Virus Rx 1.3 & later Virus Rx 1.4 showed only that
  1110. almost all applications, the System and Finder (v. 6.0.2) were
  1111. damaged.  Replacement of the damaged programs and system files was
  1112. performed repeatedly over a week's period.  In the meanwhile, hundreds
  1113. of customers used the machines and infected their diskettes.  In
  1114. between my own efforts, employees of the store often replaced the
  1115. system files and applications themselves, in an effort to fix the
  1116. problem.  The hard disks were initialized several times over several
  1117. days.  Never-the-less, the infection reappeared immediately each time,
  1118. soon after it began to be used.
  1119.  
  1120. A few days later, similar problems began to be reported at the Kinko's
  1121. Studio City store, on Ventura Boulevard near Laurel Canyon.  The same
  1122. procedures were followed at that store.  Some of the same well-meaning
  1123. but uninformed employees tried to solve the problem.  In spite of the
  1124. best efforts of several staff members and my own frequent visits, the
  1125. equipment failed to print roughly half the time.  Each store was
  1126. losing 100's of dollars due to the problem, adding to $1000's.
  1127.  
  1128. On Tuesday, January 3, I began to seriously and scientifically
  1129. investigate the nature of the problem.  Careful poking around in the
  1130. files with ResEdit 1.2b2 had already revealed no infestation of either
  1131. Scores or nVIR, with which we were sadly very familiar and expert at
  1132. handling.
  1133.  
  1134. Using ResEdit, I opened up a RcleanS and RdirtyS copy of Teach Text.
  1135. The infected copy was exactly 728 bytes larger than the clean one.
  1136. The CODE resource list showed ID's 0 thru 3 in the infected copy, and
  1137. 0 thru 2 in the clean copy.  The new resource, ID number 3, was
  1138. exactly 712 bytes.  The CODE resource numbered 0 was exactly 16 bytes
  1139. bigger in the dirty copy than the clean copy.
  1140.  
  1141. I became very, very concerned about the problem, as I found by using
  1142. the Virus Detective* desk accessory to search for 712 byte CODE and
  1143. INIT resources that there was also an INIT ID 29 installed in most
  1144. documents, other INIT files such as Pyro* & Suitcase II, the System of
  1145. course, the Desktop file, and all font and DA suitcase files, as well
  1146. as font printer drivers such as the LaserWriter driver, and Adobe
  1147. printer fonts.  Some applications such as PageMaker, Freehand and
  1148. Illustrator, had literally dozens of extra 712-byte CODE resources
  1149. added.  They grew bigger on each startup and during each boot, whether
  1150. started up or not.
  1151.  
  1152.  
  1153. HOW RINIT 29S WORKS:
  1154.  
  1155. After some 57 hours of research and virus fighting labor at Kinko's 2
  1156. infected local stores, I have determined the following:
  1157.  
  1158. 1.  The INIT 29 Virus will not accept locked disks after it has been
  1159. fully activated on an infected system.  This is the easiest way to
  1160. find out if you are fully infected.  However, since this symptom does
  1161. not occur immediately, you will also need to make further checks.
  1162.  
  1163. 2.  The virus first invades the Desktop file of a disk when a program
  1164. is copied onto it, inserting the 712 byte INIT ID 29 resource into it.
  1165. (Alternately, the INIT is added to a system file if an infected
  1166. application is started up, even without being copied to the disk.)
  1167.  
  1168. 3.  On the next boot, the INIT is added to the System from the desktop
  1169. file (or elsewhere, perhaps), and to every application (as a new code
  1170. resource numbered one higher than the existing resource ID, and
  1171. adjusted CODE ID 0 resource) that is used during that work session,
  1172. and to most documents created by the infected applications during the
  1173. session.
  1174.  
  1175. 4.  During the very next boot, the infected System will insert the
  1176. INIT or CODE resources into every targeted file on the hard disk (or
  1177. diskette), including:
  1178.  
  1179.         % The actual Desktop file of the operative system disk (hard
  1180.           disk or not)
  1181.  
  1182.         %  INITs such as Suitcase II, Pyro*, etc.
  1183.  
  1184.         %  CDEVs, RDEVs, and other system folder files
  1185.  
  1186.         % All applications and programs containing CODE resources,
  1187.           with Illustrator 88, Freehand 2.0 and PageMaker 3.0 getting
  1188.           (2) new 712 byte resources per each use or boot.  Others
  1189.           seem to stay content to keep only one extra CODE resource.
  1190.  
  1191.         % Most document files, including those created by MS Word,
  1192.           MacWrite, Ready,Set,Go!, PageMaker, Illustrator, Freehand,
  1193.           and MS Works.  Oddly, MacPaint files seemed to be free of
  1194.           the INIT.
  1195.  
  1196.         % All Rscreen fontS files (whether for imagewriter or
  1197.           laserwriter, new or old versions), all Desk Accessory files,
  1198.           new or old, all LaserWriter printer drivers, including those
  1199.           used by Cassidy, Adobe and Apple fonts, Laser Prep and Aldus
  1200.           Prep files, etc.
  1201.  
  1202. 5.  During invasion of an application, the INIT 29 Virus makes itself
  1203. a vital part of the application, by changing the applications
  1204. "jump-table" or CODE ID = 0 resource to list it as the FIRST SEGMENT
  1205. TO BE RUN ON LAUNCH.  The address of the next segment of CODE to be
  1206. run is copied from the jump table into the virus itself.  This means
  1207. that removing the virus will kill the application (very much like some
  1208. protoplasmic viruses).  The title of this report is taken from the
  1209. address of the order to run first, namely the eleventh word of the
  1210. jump table, which is changed to read the new address of the virus
  1211. instead of the first segment of the original program CODE.  It is this
  1212. word that is changed by most Mac viruses, at least so far, to ensure
  1213. that they are run before any other, possibly anti-viral, instructions.
  1214.  
  1215.  
  1216. SYMPTOMS OF THE INFECTION INCLUDE:
  1217.  
  1218.         % After the infected system is rebooted with the INIT running,
  1219. it will not accept locked disks.  It provides the alert saying that
  1220. the disk suffers from minor damage and asks to repair it.  You say OK
  1221. and then it ejects the disk saying, of course, that the Desktop file
  1222. could not be rebuilt on it.
  1223.  
  1224.         % After the infection is mature, often several days old, it
  1225. begins to interrupt printing and cause documents to fail to print.
  1226. This has especially been noticed with MacWrite, MS Word, PageMaker,
  1227. Illustrator and Ready,Set,Go!  This seems to be an intermittent
  1228. problem, and can sometimes express itself very soon after infection.
  1229. $Apple's own Virus Information Report says this is most likely due to
  1230. the Vertical Screen Blanking Interval being used by the virus to do
  1231. its work, and the work cycle of the virus running too long and
  1232. interfering with the printing tasks.
  1233.  
  1234.         % Also after a mature infection of several days, the system
  1235. seems to of ten fail to boot from the infected disk, giving a System
  1236. Error ID 02.  $Robert Wright tells me that that this is due to the
  1237. Virus trying to use parts of the system which have not yet loaded into
  1238. RAM.
  1239.  
  1240.  
  1241. FOR EMERGENCY ACTION:
  1242.  
  1243.         % Don't rely entirely on Vaccine 1.01 from CE Software, or
  1244. Apple's own VirusRX 1.4a2, or any other currently available program
  1245. other than Virus Detective* DA, version 2.0 (1.2 will do, but is not
  1246. as flexible, and will sometimes give false reports of removing locked
  1247. or protected viral resources).
  1248.  
  1249.         % You will need to type 3 new lines of search instructions
  1250. into Virus Detective* 1.2: INIT ID 29, INIT Size 712, CODE Size 712.
  1251. (Virus Detective* 2.0 comes setup for several viruses including INIT
  1252. 29 already.)  So far, the only two programs I have found with
  1253. legitimate CODE resources of 712 bytes are the fun PD programs
  1254. Biorhythm and Geographic.  Others you may find are most likely
  1255. infected and need to be removed from your hard disk.
  1256.  
  1257.         NOTE: Simply removing the INIT is good enough from the
  1258. infected non-application files, but applications will bomb if they are
  1259. restarted after only removing the 712 byte CODE sections.  Their
  1260. jump-table, or CODE ID = 0 resource has been re-written by the virus
  1261. to look for the VirusUs own CODE segment.  Since the segment will no
  1262. longer be there after you remove it, the System will crash with a
  1263. System Error ID 15 $Robert Wright tells me this is a "segment loader"
  1264. failure.  If you know how to use ResEdit, you can replace words 9,
  1265. 10, 11 and 12 in Code Segment 0 with words 16, 17, 18 and 19 of the
  1266. top-most viral code segment.  Then remove the viral code segment(s) by
  1267. RclearingS them.  Remember that many applications may have received
  1268. many, many segments of the 712 byte viral code.  The newest segment,
  1269. or highest numbered one, will be the one containing the proper words
  1270. for copying back into the code 0 segment.  Be certain to removed all
  1271. viral segments.  If you are not willing or able to re-write the code
  1272. using ResEdit as described here, rely on your original master disk
  1273. (which should always, of course, be kept locked), and simply replace
  1274. the damaged copy with another clean one.
  1275.  
  1276.         % Be sure that you do not miss a single infected file,
  1277. especially the Desktop, System, Finder or INITs, CDEVs, or RDEVs.
  1278. Also, check ALL your diskettes.  They can be infected, even if no
  1279. programs have been copied from them or to them.  Simple insertion into
  1280. an infected hard disk computer set-up infects them.  You can then run
  1281. your system again.
  1282.  
  1283.         % The Virus Detective* 1.2 desk accessory will not remove
  1284. certain INIT ID 29 resources from documents and other files, since
  1285. they are locked or protected by the virus.  Sometimes it claims to
  1286. have removed the infections EVEN THOUGH IT HAS NOT DONE SO, and
  1287. sometimes it tells you it actually failed.  Don't trust it completely.
  1288. (Version 2.0 of the DA may do this job better, and comes fixed to look
  1289. for Peace, Scores, nVIR, hPAT, and INIT 29.)  Go into ResEdit and
  1290. check all questionable files and clear out the locked INIT ID 29s.  To
  1291. encourage great Mac-ers like the author of this program, Jeffry
  1292. Shulman, be sure to send him his money Q $ 20.00 is a bargain!  His
  1293. address is Q P.O. Box 521, Ridgefield, CT 06877-0521.
  1294.  
  1295. I understand from talking with people in the LAMG and elsewhere that
  1296. this virus is as yet not well known around LA.  However, rumors of the
  1297. virus have cropped up, evidently occurring some weeks ago in the Simi
  1298. Valley.  Members of the Canejo-Ventura area Mac Users Group reported a
  1299. new virus which added INIT ID 29 to various applications on hard
  1300. disks.  As far as I know, no application has yet been written by their
  1301. group to repair jump tables of infected applications.  Of course, this
  1302. report is posted on several local BBS units and 100 copies were given
  1303. away at the January MacValley meeting to interested members.
  1304. Communication is also being performed with other regional BBS units
  1305. and interested parties in an effort to fight the growing epidemic of
  1306. INIT 29 and its associated problems.
  1307.  
  1308.  
  1309. FUTURE EFFORTS:
  1310.  
  1311. We are now working on efforts to automatically detect the infection of
  1312. the INIT 29 Virus and to prevent its operation.  MacValley members
  1313. should expect to receive further information by the next meeting, in
  1314. February.  Other efforts are being made to provide a program that will
  1315. automatically repair infected documents, files, and applications.
  1316.  
  1317. Until such programs are available, you would be advised to avoid using
  1318. public service bureau computers for laser printing or otherwise
  1319. WITHOUT FIRST LOCKING YOUR DISKETTES, then copying the data onto their
  1320. hard disks for revision or printing.  If your locked disk is rejected,
  1321. DO NOT UNLOCK IT.  You may unlock it, and try to copy it, print it and
  1322. or revise it on their hard disk.  DO NOT RECOPY THE REVISED VERSION OF
  1323. YOUR FILE TO YOUR DISK unless you are willing to accept the
  1324. consequences of an infection at home.  NOTE: Some document files after
  1325. infection fail to copy, due apparently to their "protect" bit being
  1326. set by the virus.  This is the cause of much frustration at such
  1327. service bureaus.
  1328.  
  1329.  
  1330. FURTHER REPORTS OF INFECTIONS,
  1331. NEW VIRUS SYMPTOMS, ETC.:
  1332.  
  1333. Any further information, elaboration on the symptoms, or other virus
  1334. reports would be appreciated .  Call Thomas Bond at 818-843-0567, or
  1335. David Lagerson, MacValley President, at 818-882-4467.
  1336.  
  1337. ---------------------------------------------------------------------------
  1338.  
  1339. ANTI VIRUS
  1340.  
  1341.  
  1342. This is a report on the ANTI Virus. For any information, please contact
  1343. me directly at the following address:
  1344.  
  1345. Danny Schwendener
  1346. ETH Macintosh Support, ETH-Zentrum, m/s PL, CH-8092 Zuerich, Switzerland
  1347. UUCP:     macman@ethz.uucp     BITNET:    macman@czheth5a.bitnet
  1348. Internet: macman@ifi.ethz.ch   AppleLink: macman%czheth5a.BITNET@DASNET#
  1349.  
  1350.  
  1351. Note: This is an extract of the full report. Sensitive information has
  1352.       been removed. The full report has been sent to known authors of
  1353.       virus detectors and vaccines. Please distribute this version of
  1354.       the report as widely as possible. I don't have access to CompuServe,
  1355.       GEnie or CalvaCom.
  1356.  
  1357.  
  1358. A. HISTORY
  1359.  
  1360. The virus initially appeared in France. So far, it has been signaled in
  1361. Paris, Marseille and a few other places in France. Thierry Lalettre, chief
  1362. moderator of the Macintosh forum in CalvaCom, alerted by user contributions
  1363. in his forum, posted a warning to CompuServe and mailed samples of the virus
  1364. to a few authors of macintosh vaccines and viral detectors, including myself.
  1365.  
  1366. Note: CalvaCom (formerly Calvados) is Europe's largest commercial electronic
  1367.       conferencing system, in the same spirit as CompuServe or GEnie, but
  1368.       mainly directed at owners of Apple products.
  1369.  
  1370.  
  1371.  
  1372. B. OVERVIEW
  1373.  
  1374. The ANTI Virus is a program that attaches itself to the end of the main
  1375. code resource of an application. It patches the main code so that it is
  1376. invoked in the first place each time the application is started. An
  1377. infected application will try to infect the system heap, if it wasn't
  1378. already infected beforehand (the system heap means the part of the system
  1379. that has been loaded into memory at boot-time. ANTI does *not* infect the
  1380. file 'System').
  1381.  
  1382. The virus does nothing hazardous besides propagating itself. It is less
  1383. contagious than the INIT29 virus, but more than nVIR.
  1384.  
  1385. The hypothesis made by Thierry Lalettre, stating that Apple France
  1386. Developer Support Manager Alain Andrieux' program 'Stamp 1.0b5' has
  1387. been purposely recompiled by an unknown person to include special
  1388. infection code, is wrong. A disassembly of all resources in the
  1389. application only showed up that it was infected in a normal way by
  1390. the ANTI virus.
  1391.  
  1392. Thierry also stated that the virus only attacks applications with
  1393. CODE ID=1 named "Main". This is not correct. Actually, the virus
  1394. propagates to all applications whose main code entry starts with
  1395. a JSR. Most compilers create this type of applications, and some of
  1396. them, including MPW, name the CODE ID=1 resource "Main".
  1397. Under certain circumstances, the virus also propagates to all other
  1398. kind of applications (i.e. the ones which don't start with a JSR).
  1399.  
  1400. The virus assumes that the main program entry of the application
  1401. to infect is contained in CODE ID=1. This is the case in all normal
  1402. applications. Applications whose main routine is contained
  1403. in a CODE resource different from ID=1 will either not be infected
  1404. or crash.
  1405.  
  1406. Portions of the code suggest that the virus has been written as part of
  1407. a copy-protection scheme.
  1408.  
  1409.  
  1410.  
  1411. C. DETECTION
  1412.  
  1413. <some stuff removed>
  1414.  
  1415. The virus can be detected by several means:
  1416.  
  1417. - it adds 1344 bytes to the CODE ID=1 resource of the file. An infected
  1418.   application will have grown by 1K. The modification date is changed to
  1419.   the date and time of the infection.
  1420.  
  1421. - it contains seven occurrences of the hex sequence $16252553. The last
  1422.   occurrence of this sequence is located 43 bytes before the end of the
  1423.   CODE ID=1 resource. The virus uses this sequence to detect if a System
  1424.   or an application has already been infected.
  1425.  
  1426. - the virus also contains a 9-char. pascal string 'ANTI ' (hence its name)
  1427.   followed by the hex sequence. The 9-byte string is followed by the
  1428.   pascal string '#000000'.
  1429.  
  1430. - it patches _MountVol and _OpenResFile.
  1431.  
  1432. Trap watcher programs like GateKeeper, RWatcher or Vaccine will successfully
  1433. prevent infections. There is however a restriction with Vaccine: As the
  1434. virus temporarily uses the pointer to the global variables (A5) for
  1435. internal tasks, Vaccine will not be able to access the screen to display
  1436. a warning alert. If the option "Always compile MPW INITs" is unchecked,
  1437. it will beep and wait that the user presses 'y' (allow resource copy) or
  1438. 'n' (don't allow copy). If the option is checked, Vaccine will allow
  1439. the infection without warning the user. So be careful if you use that
  1440. option.
  1441.  
  1442. The next release of VirusDetective will be able to find this kind of virus
  1443. by looking for specific hex sequences.
  1444.  
  1445.  
  1446.  
  1447. D. REPAIR
  1448.  
  1449. Note: I personnally don't endorse this. Badly repaired applications
  1450.       may cause much more harm than the virus itself could ever do.
  1451.       An infected application should be deleted. I'm including this
  1452.       information for those who forgot to backup their disks.
  1453.  
  1454. The virus starts with the following hex sequence:
  1455.  
  1456.   000000: 6000 0028 0000 0000 1625 2553 0723 3030
  1457.   000010: 3030 3031 0941 4e54 4920 1625 2553 0723
  1458.   000020: 3030 3030 3030 xxxx xxxx
  1459.  
  1460. xxxx xxxx contains the saved values for the instruction words that
  1461. have been patched by the virus.
  1462.  
  1463. To repair an application:
  1464.  
  1465. 1- Be sure you're working in a clean environment (uninfected Finder
  1466.    and ResEdit).
  1467.  
  1468. 2- Open the CODE ID=0 resource. Write down the word at position 16
  1469.    (first word of the third line if opened with ResEdit). This value
  1470.    tells you at what position within the CODE ID=1 resource you have
  1471.    to look for the patch, and is usually $0000.
  1472.  
  1473. 3- Search in the CODE ID=1 resource for the hex sequence I described
  1474.    above. write down the value I noted as 'xxxx xxxx'.
  1475.  
  1476. 4- Still in CODE ID=1, find the location of the patch, with the value
  1477.    you found in step 2. The first word of the patch should be $4EBA.
  1478.  
  1479. 5- Replace the patch by the two words you found in step 3.
  1480.  
  1481. 6- Remove the whole virus code (everything from the virus start to
  1482.    the end of the resource). This step is not absolutely necessary.
  1483.  
  1484.  
  1485.  
  1486. D. INTERNAL WORKINGS
  1487.  
  1488. <lots of text deleted>
  1489.  
  1490. The _MountVol patch works as follows:
  1491.  
  1492. - Call original _MountVol
  1493.  
  1494. - Check if mounted volume is a floppy drive. If not, exit.
  1495.  
  1496. - Check if floppy is old (400K) or new (800K) and if the disk is
  1497.   single-sided or a double-sided. According to the result, read in either
  1498.   logical block 192 or 384.
  1499.  
  1500. - check for our hex sequence in position 8 of the block. If found, JSR
  1501.   to the code in position 0 of the sector, then exit.
  1502.  
  1503. Note: The virus does not contain any portion of code that writes something
  1504.       directly to a logical block. Also, the code that will be executed
  1505.       if the search is successful is not known at this point. This routine
  1506.       has a strong ressemblance to existing copy-protection schemes. It
  1507.       is very possible that the virus is part of a copy-protection. I
  1508.       won't comment on copy-protection per se, but I find using viruses as
  1509.       part of a product's protection scheme extremely unethical.
  1510.  
  1511.